home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d2
/
tlb_v117.arc
/
LASTBYTE.DOC
< prev
next >
Wrap
Text File
|
1990-12-21
|
74KB
|
1,622 lines
THE LAST BYTE (tm)
A DOS Upper Memory Manager
Version 1.17
Copyright (C) 1990
All Rights Reserved
by
KEY SOFTWARE PRODUCTS
440 Ninth Avenue
Menlo Park, California 94025
(415) 364-9847
Prodigy E-Mail Address: VGDC59A
E-Mail on Internet, Bitnet, etc: DLEWIS@SCU.BITNET
CompuServe E-Mail Address: >Internet:DLEWIS@SCU.BITNET
Dec 11, 1990 The LAST BYTE (tm) 1
_1_.__I_n_t_r_o_d_u_c_t_i_o_n________
LASTBYTE is a collection of software that can make up to 384k
more memory available to your computer if it has one of the
following memory controller chips, an Expanded Memory board, or
if it is a 386sx, 386, or 486 and you have installed the Windows
3.0 version of EMM386.SYS:
Chips and Technologies:
82C212 - From the CS8221 NEAT (tm) chipset
82C222 - From the CHIPS/250 PS/2 50/60 chipset
82C235 - The SCAT (tm) Single Chip AT VLSI chip
82C241 - From the CS8223 LeAPset (tm) chipset
82C302 - From the CS8230 386/AT CHIPSet (tm)
82C307 - From the CS8231 386/AT CHIPSet (tm)
82C311 - From the CS8233 PEAK 386/AT CHIPSet (tm)
82C322 - From the CHIPS/280 PS/2 70/80 chipset
82C812 - From the CS8281 NEATsx (tm) chipset
82C841 - From the CS8283 LeAPset-sx (tm) chipset
VLSI Technology:
82C202 - From VLSI Technologies' PC/AT chipset
Texas Instruments:
82411 - The Single-Chip AT Controller
This chip is "functionally" equivalent to the
Chips and Technologies NEAT chipset, but unlike
the latter, most of its configuration registers
are write-only, causing automatic detection of a
NEAT compatible chipset to fail. You must use
the "82411" override option on the LASTBYTE.SYS
command line with this device.
LASTBYTE does this by using left-over shadow ram or by mapping
EMS pages to fill the unused regions between 640k and 1M.
With LASTBYTE, this memory can also be used for TSR's, TSR
markers (to facilitate TSR removal), device drivers, DOS
Buffers, RAM disks, and Emulated Expanded Memory rather than
loading all of these into conventional memory (0-640k) where
they use precious DOS memory space needed by your application
programs. If you don't have an EGA or VGA, or if you don't use
graphics, then conventional memory (available to application
programs) can be extended from 640k to as much as 736k.
Other system requirements: DOS 3.0 or higher, 1M or more of
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 2
(physical) memory.
Important Differences
LASTBYTE has five significant advantages over other DOS Memory
Managers:
o LASTBYTE does not require a 386. Many memory
managers won't work on non-386 systems. The only
hardware required by LASTBYTE is one of the above
memory controller chips and 1MB of memory, an
Expanded Memory board, or a 386sx, 386, or 486
processor with the Windows 3.0 version of
EMM386.SYS installed.
o LASTBYTE does not use any 386 protected mode
software. This means that unlike some other memory
managers, LASTBYTE works well with protected mode
software such as Windows 3.0.
o LASTBYTE doesn't require any Extended Memory.
Other memory managers depend on the 386 processor's
ability to remap physical memory from above 1MB
into high memory, but of course that memory is no
longer available as Extended Memory. LASTBYTE uses
the memory you already have sitting between 640k
and 1Meg. (Obviously, this statement applies only
if your computer does not require EMM386.SYS to
install LASTBYTE.)
o On motherboards that use one of the above memory
controller chips, LASTBYTE, unlike all other DOS
memory managers, can use the high memory addresses
that coincide with the Display Buffer, Bios ROM or
any adapter that you have installed. LASTBYTE uses
a "Bank-Switching" technique to use this memory as
a Ram Disk, as Expanded Memory, and to hold TSR
"markers" to facilitate TSR removal. This gives
LASTBYTE the unique ability to use *ALL* 384k of
high memory!
o LASTBYTE does not slow down the performance of your
computer, both because it does not incur the
instruction execution inherent in 386 protected
mode, and because it uses regular (full-speed)
memory. (Some memory managers use the actual
EGA/VGA graphics buffer as DOS memory, but the
display buffer memory of some EGA/VGA adapter cards
can be as much as six times slower than regular
memory.)
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 3
_2_.__I_n_s_t_a_l_l_a_t_i_o_n________
You should first install LASTBYTE on a floppy to verify that you
can boot and operate your PC reliably with LASTBYTE installed:
Step 1: Use the FORMAT command with the /S option to
prepare a bootable floppy disk.
Step 2: Copy all (it's easier) of the LASTBYTE files
onto the diskette. (Actually, all you need
are LASTBYTE.SYS, HIGHDRVR.SYS, HIGHTSR.EXE,
HIGHMEM.EXE, HIGHMARK.EXE, HIGHUNDO.EXE,
CLOCK.EXE, COLS.40, and COLS.80.)
Step 3: Copy the DOS device driver file ANSI.SYS onto
the diskette.
Step 4: Create a CONFIG.SYS file on the floppy that
contains the lines:
DEVICE=LASTBYTE.SYS ?
DEVICE=HIGHDRVR.SYS ANSI.SYS
Note: If your installation of
LASTBYTE is dependent on the
presence of Expanded Memory, then
you must precede these lines with a
similar line to install your
Expanded Memory device driver
before installing LASTBYTE.SYS.
The "?" in the first line is intentional - it
directs LASTBYTE to display what it finds in
the high memory address space.
Step 5: Create an AUTOEXEC.BAT file on the floppy that
contains the lines:
HIGHMARK
HIGHTSR CLOCK
Step 6: Boot from the floppy. (Note: Some memory
controller chips on motherboards with only 1
Meg of physical memory provide a setup option
to use the 384k as Extended Memory by
relocating it above the 1 Meg boundary. This
option is incompatible with LASTBYTE and must
be disabled in the CMOS Setup Configuration
Menu.)
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 4
If everything goes ok, you'll see a sign-on box that looks
something like the following:
╔═══════════════════════════════════════════════════════════════════╗
║ The Last Byte v1.17h - Licensed for EVALUATION ONLY ║
║ Copyright (C) 1990, Key Software Products, All Rights Reserved ║
╟───────────────────────────────────────────────────────────────────╢
║ 25 Mhz 80386 with Chips & Technologies 82C302c ║
╟───────────────────────────────────────────────────────────────────╢
║ Address Range Size Width Bandwidth Description ║
║ A0000-9FFFF 640 KB 32 bits 38.0 MB/Sec Conventional Memory ║
║ A0000-FFFFF 384 KB 32 bits 38.0 MB/Sec Shadow Ram Memory ║
║ A0000-BFFFF 128 KB 16 bits 3.1 MB/Sec VGA Display Buffer ║
║ C0000-C7FFF 32 KB 16 bits 3.1 MB/Sec Adapter Rom Memory ║
║ C8000-CB7FF 14 KB 8 bits 1.3 MB/Sec Adapter Rom Memory ║
║ CB800-CBFFF 2 KB 8 bits 1.3 MB/Sec Adapter Ram Memory ║
║ F0000-FFFFF 64 KB 16 bits 3.1 MB/Sec Bios (Boot) Rom ║
╟───────────────────────────────────────────────────────────────────╢
║ Conventional High-DOS Bank-Switch Shadowed Roms Excluded ║
║ 640k 32k 32k 96k 224k ║
╚═══════════════════════════════════════════════════════════════════╝
If your PC stops before displaying the entire box shown above,
or if it fails to operate properly after booting, this is
because LASTBYTE failed to identify one of your installed
adapters that uses some portion of the high-memory address
space. If this happens, you'll probably need to use the
"EXCLUDE=" command line option (discussed below) to manually
disable the corresponding region(s) where conflict occurs. To
temporarily get around this problem, you can manually abort all
LASTBYTE device drivers and TSR's by simultaneously holding down
the <left shift>, <alt>, and <ctrl> keys during the boot
sequence.
The following article provides an excellent definition of the
various kinds of memory, such as Conventional, Extended,
Expanded, High, and Upper. More important, however, is its
discussion of how various adapter cards make use of the address
space between 640k and 1 Meg, and may provide some insight if
you're having problems getting LASTBYTE to install properly:
Barry Simon, "How to Get the Most from Your System's
High DOS Memory", PC Magazine, Vol. 9, No. 10 (May 29,
1990), pp. 347-358.
After AUTOEXEC.BAT is finished, you'll see the current time
displayed in inverse video in the upper left-hand corner of your
screen. This verifies that HIGHTSR has succesfully loaded the
CLOCK.EXE into high memory. You can verify that ANSI.SYS is
installed and operating by using the commands:
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 5
TYPE COLS.40
{switches display to 25 rows by 40 columns}, or
TYPE COLS.80
{switches display to 25 rows by 80 columns}.
(These commands will display garbage on the screen if ANSI.SYS
has not been installed.)
Now run HIGHMEM to get a map of high memory. Depending on what
adapter cards you have installed, HIGHMEM's output should look
something like that shown below.
Paging the output of HIGHMEM
You may use the "/Page" (or simply "/P") option of
HIGHMEM to force the output to pause after each screen
full.
This listing is for a PC that has an EGA display adapter and a
SCSI hard disk adapter. The "Shadow Ram" at C0000-C3FFF is the
EGA Bios and the "Adapter Rom" and "Adapter Ram" are on the SCSI
adapter card. The "DOS Unusable" region exists because of the
16k resolution of the memory controller chip. On a more typical
machine (without a SCSI hard disk), the entire 16k region from
C8000-CBFFF would be available for device drivers and TSR's.
The column labelled "Bnk-Swtch" shows which entries can be used
as Bank-Switch memory for Ramdisk, emulated EMS memory, or TSR
markers.
Numbers enclosed in brackets (e.g., "[ 14,064]") refer to memory
that is available for use. Once you have licensed your copy of
LASTBYTE, the "Excluded Block" shown above would be added to the
free High-DOS memory pool, and the second entry labelled "EGA
Display Ram" would be added to the free Bank-Switch memory
pool. That means a total of approximately 160k of memory
available for device drivers and TSR's and another 128k for Ram
Disks, TSR markers, or emulated EMS memory. (Sections 11, 12,
and 14 explain how you may even be able to increase the 160k
figure to 224k or even 288k.)
The column labelled "Mark" is used in conjunction with HIGHMARK
and HIGHUNDO. In particular, you may have wondered why the
command HIGHMARK was included in the AUTOEXEC.BAT file. Since
it was executed before running HIGHTSR CLOCK, you are now able
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 6
to remove the clock from memory by simply running HIGHUNDO.
HIGHMEM v1.17g (C) Key Software Products 1990. All Rights Reserved.
MCB Address Range Description High-DOS Bnk-Swtch Total Mark
──── ───────────── ──────────────── ──────── ───────── ─────── ────
C400 ┌ A0000-C3FFF <Wrap Block>
C402 ├─ A0000-A7FFF 16-bit VGA Ram [ 32,768] 32,768
C404 ├─ A8000-BFFFF 16-bit VGA Ram 98,304
C406 └─ C0000-C3FFF 32-bit Shadow Ram 16,384 16,384
C408 C4090-C4AAF LASTBYTE.SYS 2,592 2,592
C4AB C4AC0-C4AFF CLOCK.EXE [Env] 64 64
C4B0 C4B10-C4CBF CLOCK.EXE 432 432
C4CC C4CD0-C7FDF ....DOS Free [ 13,072] 13,072
C7FE ┌ C8000-CBFFF <Wrap Block>
CC00 ├─ C8000-C97FF 8-bit Adapter Rom 6,144
CC02 ├─ C9800-C9FFF 8-bit Adapter Ram 2,048
CC04 └─ CA000-CBFFF DOS Unusable 8,192
CC06 CC070-CD1EF ANSI.SYS 4,480 4,480
CD1F CD200-CFF9F ....DOS Free [ 11,680] 11,680
CFFE ┌ D0000-FFFFF <Wrap Block>
CFFA ├─ D0000-EFFFF Excluded Block 131,072
CFFC └─ F0000-FFFFF 32-bit Shadow Ram 65,536 65,536
─────── ─────── ───────
High Memory In Use: 6,816 81,920 334,496
[Free High Memory]: 25,504 32,768 58,272
MCB Overhead: 192 256 448
─────── ─────── ───────
Total High Memory: 32,512 114,944 393,216
_3_.__C_o_m_m_a_n_d__L_i_n_e__O_p_t_i_o_n_s__F_o_r__L_A_S_T_B_Y_T_E_._S_Y_S____
During initialization, LASTBYTE.SYS scans high memory looking
for Bios ROMs, Display Ram, and Adapter Cards that occupy the
640k-1M address space. The unoccupied portion of high memory
defaults to High-DOS memory (for device drivers and TSR's),
while the occupied portion defaults to Bank-Switch memory that
can be made accessible for Ram disks, emulated EMS memory, etc.
These defaults can be modified by the use of command line
options. There are four command line options for LASTBYTE.SYS
(you may abbreviate any of these by using only the first
letter):
DOS (Abbreviated "D")
Forces a region of high memory that would
normally be used as Bank-Switch memory to be made
available as High-DOS memory. (This option is
not available when LASTBYTE depends on Expanded
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 7
Memory.)
BANKSWITCH (Abbreviated "B")
Forces a region of high memory that would
normally be used as High-DOS memory to be made
available as Bank-Switch memory. (This option is
not available when LASTBYTE depends on Expanded
Memory.)
EXCLUDE (Abbreviated "E")
Forces a region of high memory to not be
available either as High-DOS or as Bank-Switch
memory.
APPEND (Abbreviated "A")
Reserves a region of high memory for appending to
the end of DOS low (conventional) memory, thus
increasing it beyond 640k. The memory is NOT
added until it is enabled with HIGHAPND.
Requires setting "<base>" (see below) to A000,
and "<size>" to a multiple of 16k. (Note:
"<size>" is limited to 16k in the unlicensed
version so that some High DOS memory will still
be available.)
SHADOW (Abbreviated "S")
Forces a region of memory (presumably ROM) to be
copied into Shadow Ram. If other hardware
outside the specified region, but within the same
16k block conflicts with this request, a
corresponding error message will be displayed and
LASTBYTE will not be installed. (Note: This
option is normally not required. LASTBYTE will
automatically copy any ROM not already shadowed
into shadow ram if there is no conflict with
other hardware in the same 16k block.) (This
option is not available when LASTBYTE depends on
Expanded Memory.)
CACHE (Abbreviated "C")
Forces LASTBYTE to think that the PC has a
cache. This option should not be necessary;
LASTBYTE automatically detects the presence of a
cache and indicates this in the information
screen invoked by the "?" option (see below).
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 8
82C202, 82C212, 82C222, 82C235, 82C241, 82C302,
82C302c, 82C307, 82C311, 82C322, 82C812, 82C841,
82411, EMS3, EMS4, EEMS
Each of these command line options forces
LASTBYTE to assume a particular memory controller
device. Normally, LASTBYTE will automatically
detect what's installed; these options are for
those rare occasions when the automatic detection
fails. (Note: EMS3 automatically enables the
NOFRAME option described below.)
NOFRAME (Abbreviated "N")
May be used in conjunction with EMS4 or EEMS to
use the 64k page frame as High Dos Memory. Doing
so disables other (normal) use of all Expanded
Memory. (Note: EMS3 implies NOFRAME.)
? (A question mark)
Causes LASTBYTE.SYS to erase the screen, display
a summary of what it finds in the High Memory
address space, and pause for two seconds to give
the user an opportunity to read the information.
To freeze this display for a longer period, press
<Ctrl>-S; then to continue with CONFIG.SYS
processing, press any key.
The format of the APPEND, DOS, BANKSWITCH, EXCLUDE, and SHADOW
options is:
<keyword>=<base>:<size>
where "<base>" is a base paragraph (segment) address expressed
as four hexadecimal digits, and "<size>" is kilobytes expressed
in decimal. For example, to force the 64k address range
starting at segment A000 to be appended to the end of the 640k
of Conventional memory, the proper option syntax would be:
APPEND=A000:64
(Examples of why this option can be useful are found in Section
12, "Video Display RAM above 640k".)
In a similar manner, to force LASTBYTE to use the 32k region
starting at segment F000 as High-DOS Memory, the proper option
syntax would be:
DOS=F000:32
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 9
(Examples of why this option can be useful are found in Section
11, "Using the DOS=F000:32 Option".)
There are two restrictions on these options:
o The base must be exactly 4 hexadecimal digits, must
lie at or above A000, and must be a multiple of
0080 (2k). (For APPEND, the base must always be
A000.)
o The size must be in the range 2-384 kb, and must be
a multiple of 2.
The reason for the "multiple of 2 (kb)" requirement is that
LASTBYTE tries to allocate memory in 2k increments,
corresponding to the IBM spec that Bios ROM's are sized in
multiples of 2kb. However, this is somewhat complicated by the
coarse resolution of the memory controllers:
The 640k-1M area is partitioned into blocks. Some controllers
use 16k blocks, some use 32k blocks, and some use 64k blocks.
Each block must be either totally enabled or disabled. I.e., if
any part of a block's address space is occupied by an adapter
card, the entire block of memory must be disabled and cannot be
made available as High DOS Memory. Thus the "DOS=" option
restricts "<size>" to multiples of the block size, and "<base>"
to addresses that begin on block boundaries.
Once you are convinced that LASTBYTE is working satisfactorily,
you may copy it to your hard disk and modify the CONFIG.SYS and
AUTOEXEC.BAT files there accordingly.
_4_.__H_I_G_H_M_A_R_K__a_n_d__H_I_G_H_U_N_D_O_:__U_n_l_o_a_d_i_n_g__T_S_R_s__f_r_o_m__M_e_m_o_r_y__
Sometimes it can be useful to remove one or more TSR's from
memory, either because you no longer want to use the features
that they provide or perhaps in order to make room for another
set of TSR's.
In order to be able to remove a group of TSR's from high memory,
they must be be marked. To mark them, run HIGHMARK once before
you use HIGHTSR to load the TSR's. Then later, simply run
HIGHUNDO - the mark and all of its assoicated TSR's will be
removed.
HIGHMARK may be executed more than once to establish levels of
TSR's to be removed. Each execution of HIGHMARK places another
mark in memory with a unique mark number. Every TSR loaded by
HIGHTSR is automatically associated with the most recent
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 10
execution of HIGHMARK. You can use HIGHMEM to see the marks,
their mark number, and the set of TSR's associated with the
mark. Every execution of HIGHUNDO will then remove the set of
TSR's associated with the most recent HIGHMARK.
You may specify a mark level on the command line of HIGHMARK.
This will cause it to remove all the TSR's and marks whose mark
number is greater than or equal to the number on the command
line.
_5_.__H_I_G_H_I_N_S_T_:__L_o_a_d_i_n_g__S_H_A_R_E_._E_X_E__i_n_t_o__H_i_g_h__M_e_m_o_r_y___
DOS 4 now installs the SHARE program automatically if you have a
hard disk which is greater than 32 MB in a single partition. It
does this without asking because otherwise it is possible to
corrupt the data on the disk when running programs that use the
old File Control Block (FCB) approach to access files.
Unfortunately, some internal parts of DOS still use FCB's! So
don't try to prevent SHARE from being loaded by removing it from
your system! If DOS can't find it, you'll get a warning message
during the boot saying that "SHARE should be loaded for large
media". You could load it during AUTOEXEC.BAT processing, but
you'll still get the warning because the check occurs during
CONFIG.SYS processing.
So how can you load this TSR into High Memory without getting
the warning? DOS recently introduced the "INSTALL=" directive
that allows TSR's to be installed during CONFIG.SYS processing.
Programs that Microsoft suggests be loaded in this manner
include FASTOPEN, KEYB, NLSFUNC, and SHARE. For example:
INSTALL=C:\DOS\SHARE.EXE
However, the above command causes SHARE to be loaded down in
Conventional Memory. To get it into High Memory, use:
INSTALL=HIGHINST.EXE C:\DOS\SHARE.EXE
HIGHTSR works too, but you get an error message about the above
line in CONFIG.SYS. This is because the DOS expects the name
that immediately follows the equals sign to be a TSR, and
anything else (e.g., HIGHTSR) will cause the error message.
HIGHINST is a copy of HIGHTSR that has been modified to be a TSR
so that this error message can be avoided. Since HIGHINST
itself is a TSR, a small part of it will remain resident down in
Conventional Memory, but only 96 bytes.
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 11
_6_.__T_h_e__/_S_I_Z_E__o_p_t_i_o_n__o_f__H_I_G_H_D_R_V_R__H_I_G_H_T_S_R__a_n_d__H_I_G_H_I_N_S_T_
The amount of High-DOS memory required to load a device driver
or TSR (hereafter called the "load requirement") is the larger
of two amounts: (1) the amount required during initialization
(greater than or equal to the size of the file) and (2) the
amount required when finally resident.
Although the final resident requirement of any high-loaded
software may be obtained from the HIGHMEM output, remember that
the initialization (and thus the load) requirement may be
greater than EITHER the file size or the HIGHMEM listing!
Most device drivers and TSR's require more memory for
initialization than when resident, although there are a few
(such as SMARTDRV.SYS and NANSI.SYS) which require extra
resident memory for buffers, etc. And then there's the weird
behavior of FASTOPEN and MODE that require even more than this!
(See section 8, "Installing FASTOPEN and MODE into High
Memory".) Thus the normal operation of HIGHDRVR, HIGHTSR, and
HIGHINST is to use the largest free High-DOS memory block to
load the driver since the resident memory requirement cannot be
determined until after the software has been loaded and
initialized.
Unfortunately, this can lead to a less than optimum use of
memory. If the memory requirements were known, then a memory
block could be selected using a "best fit" strategy; i.e., the
smallest free High-DOS memory block which is larger than or
equal to the load requirement. This usually results in much
better utilization of memory.
HIGHDRVR, HIGHTSR, and HIGHINST have a special option /SIZE that
can be used to report the load requirement:
DEVICE=HIGHDRVR.SYS /SIZE SMARTDRV.SYS 2048 512
or: INSTALL=HIGHINST.EXE /SIZE SHARE.EXE
or: HIGHTSR /SIZE PRINT.COM /D:PRN
The load requirement will then be displayed on the console after
the software has been loaded and initialized. This information
can then be used to specify the value (expressed in bytes) to be
used with the /SIZE option to force a "best fit" allocation.
For example:
DEVICE=HIGHDRVR.SYS /SIZE:16240 SMARTDRV.SYS 2048 512
or: INSTALL=HIGHINST.EXE /SIZE:13616 SHARE.EXE
or: HIGHTSR /SIZE:17120 PRINT.COM /D:PRN
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 12
_7_.__T_h_e__/_N_O_E_N_V__o_p_t_i_o_n__o_f__H_I_G_H_T_S_R__a_n_d__H_I_G_H_I_N_S_T__
All programs, including TSR's, are allocated two regions of
memory when they are loaded: One is the area for the program
itself, and the other is for a copy of the environment. Most
TSR's don't make use of their environment, and some actually
release it to the operating system rather than hanging onto it.
If HIGHMEM finds an environment block, the corresponding entry
in the "Description" column will have the name of the TSR that
it belongs to (such as "CLOCK.EXE") followed by the indication
"[Env]". Occassionally, you may see a similar indication
"[Dat]"; this is a data block explicitly allocated by the TSR
for some unknown purpose.
TSRs that eliminate their PSP
The authors of some TSR's attempt to save a little
extra memory by having the TSR eliminate its own
Program Segment Prefix (PSP) during initialization.
Doing so makes it impossible for HIGHTSR, HIGHINST, or
HIGHMEM to identify the TSR's environment block.
However, this byte-saving mentality will usually mean
that the TSR's initialization code also eliminates its
environment block, so this is rarely a problem.
If you see a block labelled "[Env]" in the output of HIGHMEM,
then you can use the following command line option of HIGHTSR or
HIGHINST to release this memory, even if the TSR didn't:
INSTALL=HIGHINST.EXE /NOENV CLOCK.EXE
or: HIGHTSR /NOENV CLOCK
The /NOENV (and /SIZE) options must PRECEDE the name of the TSR
that is to be loaded high by HIGHTSR or HIGHINST. Case of the
option is insignificant.
_8_.__I_n_s_t_a_l_l_i_n_g__F_A_S_T_O_P_E_N__a_n_d__M_O_D_E__i_n_t_o__H_i_g_h__M_e_m_o_r_y__
The FASTOPEN and MODE programs that comes with DOS are TSR's and
as such may be loaded into high memory with either HIGHTSR or
HIGHINST. Once installed, each requires very little memory,
something on the order of 10k or less. However, neither will
install unless a LOT of memory is available, like around
50-90k. (The actual requirement depends partly on command line
options; you can determine the requirement using the /SIZE
option of HIGHTSR or HIGHINST.)
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 13
The worst part is that if FASTOPEN fails to install itself
successfully, it doesn't issue any error message - it simply
doesn't display the normal "FASTOPEN installed" sign-on
message. Moral: Let FASTOPEN and MODE be the first TSR's that
are installed into High Memory in your AUTOEXEC.BAT file so that
they get access to the maximum amount of memory.
The second hassle with these two TSR's is that they cannot be
removed by using HIGHMARK and HIGHUNDO. Evidently they modify
memory other than that tracked by the LASTBYTE utilities: the
interrupt vector table and that memory allocated to them.
_9_.__H_I_G_H_D_I_S_K_:__A__R_a_m__D_i_s_k__i_n__B_a_n_k_-_S_w_i_t_c_h__M_e_m_o_r_y__
HIGHDISK.SYS is a device driver that uses high memory to
implement a Ram Disk. Bank-Switch Memory is allocated first,
and if that isn't enough, then High-DOS Memory is allocated to
satisfy the total page request. The device driver itself may be
loaded into high memory by using HIGHDRVR.SYS to load
HIGHDISK.SYS.
Minimum Requirement
The amount of available Bank-Switch memory must be
sufficient to hold the Ram Disk's boot sector, one
copy of the FAT, and the directory. Normally this is
not a problem, but may require that HIGHDISK be loaded
before HIGHEMS3 (or HIGHEMS4).
A typical command in CONFIG.SYS might be:
DEVICE=HIGHDRVR.SYS HIGHDISK.SYS
This creates a RAM disk that uses all available High Memory,
with 32 directory entries and sectors of 128 bytes each.
A command line option may be used to change the size of the RAM
disk as in:
DEVICE=HIGHDRVR.SYS HIGHDISK.SYS 100
This creates a 100k byte RAM disk.
Other command line options may be used to change the number of
bytes per sector and directory entries, as in:
DEVICE=HIGHDRVR.SYS HIGHDISK.SYS 100 256 64
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 14
This creates a 100k RAM disk with 256 bytes per sector and 64
root directory entries.
_1_0_.__W_i_n_d_o_w_s__3_._0__C_o_m_p_a_t_i_b_i_l_i_t_y______
In general, LASTBYTE has a high degree of compatibility with
Windows 3.0. However, if you use the 386 Enhanced Mode of
Windows 3.0, there are some fine points that need clarification:
10.1 Modifying the Windows SYSTEM.INI File
On a 386 or 386sx with Windows 3.0 running in 386 enhanced mode,
LASTBYTE and WINDOWS will both try to use the high memory area
between 640k-1M, thus creating a conflict. To avoid the
conflict, you must ask WINDOWS not to use this region. This can
be done with a configuration option in the [386Enh] section of
the Windows SYSTEM.INI file:
EMMExclude=A000-FFFF
If you have used the "EXCLUDE" option of LASTBYTE.SYS to disable
any region of the high memory, then Windows may be told it is ok
to use that area. For example, if LASTBYTE is loaded using the
line:
DEVICE=LASTBYTE.SYS EXCLUDE=D000:64
then you may use the following configuration option (in addition
to the EMMExclude option above) in your SYSTEM.INI file:
EMMInclude=D000-DFFF
The EMMInclude option will take precedence over the EMMExclude
option when the two overlap, as above.
10.2 HIGHMEM and Windows 386 Enhanced Mode
DOS applications (such as HIGHMEM) run from inside Windows 3.0
are given their own "virtual" address space of 640k. Windows
tells the 386 processor to map memory references in this space
to the particular 640k of physical memory which has been
allocated to the application. References outside this range are
considered invalid and thus return garbage. Since HIGHMEM is a
program that inspects memory between 640k-1M, there's no way it
can execute properly in this context. Outside of Windows, and
in any mode other than 386 Enhanced Mode, HIGHMEM will behave
normally.
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 15
10.3 HIGHDISK and Windows 386 Enhanced Mode
HIGHDISK.SYS also uses memory in the 640k-1M range and so is
susceptible to the same problems that HIGHMEM experiences as
discussed above in Section 10.2. Outside of Windows, and in any
mode other than 386 Enhanced Mode, HIGHDISK will behave
normally.
_1_1_.__U_s_i_n_g__t_h_e__D_O_S_=_F_0_0_0_:_3_2__O_p_t_i_o_n_____
The 64k region starting at paragraph address F000 is the Bios
ROM. Many of the popular 286, 386, and 386sx clones use a Bios
ROM developed by AMI or Phoenix. The more recent versions of
these ROMs devote the first 32k to initialization code that is
only used during the boot sequence, and use the second 32k for
that portion that must remain available at all times. (This
*SEEMS* to be true of the Award Bios as well, but has not been
verified.)
By the time your PC gets to the point in its boot sequence where
it is setting up the device drivers (e.g., when it is installing
LASTBYTE.SYS), the Bios initialization code is no longer
needed. If you have one of these AMI or Phoenix Bios chips, you
can capture another 32k of high memory by using a DOS=F000:32
option (see Section 3, "Command Line Options For
LASTBYTE.SYS").
Of course, whenever you press Ctrl-Alt-Del to do a warm boot,
the ROM Bios initialization code needs to be executed again!
And that could be a problem since you've effectively disabled it
with the DOS=F000:32 option! Fortunately, LASTBYTE.SYS
intercepts all keyboard input and keeps an eye out for
Ctrl-Alt-Del. When it sees the warm boot request, it will force
a COLD BOOT if you've used the DOS=F000:32 option. This
re-enables the entire 64k Bios ROM so that the initialization
code is reactivated before the processor tries to execute it.
Otherwise a normal warm boot is used.
Keyboard TSRs
Some TSRs intercept the keyboard hardware interrupt 9,
and will jump directly into a fixed location in the
Bios ROM where the Warm Boot code begins.
Unfortunately, this will bypass LASTBYTE's attempt to
turn the ROM back on.
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 16
_1_2_.__V_i_d_e_o__D_i_s_p_l_a_y__R_A_M__a_b_o_v_e__6_4_0_k____
In general, the region A0000-BFFFF is the video display buffer
area. Various display adapters (MDA, Hercules, CGA, EGA, and
VGA) typically use only a small subset of this space. LASTBYTE
automatically senses what kind of video display adapter is
installed and reserves that portion of this address space that
might POTENTIALLY be used by the adapter. You can determine
where these areas are with the HIGHMEM command or with the "?"
option on the command line of LASTBYTE.SYS.
Theoretically, neither the EGA or VGA should use the 32k
monochrome region (B0000-B7FFF), and only use the 64k graphics
buffer (A0000-AFFFF) in high-resolution graphics modes.
However, the ROM Bios of a few EGA or VGA adapters have been
known to write into one or more of these areas even if they
aren't in monochrome or graphics mode. Thus when LASTBYTE
detects an EGA or VGA adapter, it reserves the entire 128k
display buffer between A0000-BFFFF.
If a Hercules adapter is found, LASTBYTE reserves the entire 64k
range B0000-BFFFF as Bank-Switch memory in case Hercules
graphics modes are used although only the first 4k of this space
is used for text modes.
Like the text-only mode of a Hercules card, an MDA adapter
should use only the 4k range B0000-B0FFF, and clearing the
screen with a DOS "CLS" command should erase the screen by
writing (only) in this region. However, the ROM BIOS on some
clones assumes that the MDA display buffer fills a larger (16k)
region between B0000-B3FFF and may write into memory beyond the
first 4k.
Similarly, the four video text pages of the CGA, EGA, and VGA
adapters occupy only the 16k range B8000-BBFFF, but some
software will write to the second 16k between BC000-BFFFF.
Therefore, if any (monochrome) Display Buffer RAM is found at
B0000, LASTBYTE reserves the entire 32k range B0000-B7FFF. If
any (CGA, EGA or VGA) Display Buffer RAM is found at B8000,
LASTBYTE reserves the entire 32k range B8000-BFFFF.
You may choose to override these rather conservative defaults
with the "DOS=" command line option as described below. In
addition to the constraints imposed by your particular video
display adapter, the resolution of the memory controller chip
may limit what you can do. For more information, review the
discussion in Section 3, "Command Line Options For
LASTBYTE.SYS".
The following chart summarizes the conservative approach taken
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 17
by LASTBYTE as well as what "DOS=" options you may be able to
use:
Display Reserved "DOS=" "APPEND="
Adapter by default Options Options
------- ----------- -------- ---------
Monochrome B0000-B7FFF A000:64 or A000:64
B400:16 and A000:64
Hercules B0000-BFFFF A000:64 or A000:64
B400:48 (1) and A000:64
CGA B8000-BFFFF A000:96 or A000:96
BC00:16 (2) and A000:96
EGA and VGA A0000-BFFFF A000:64 (1) or A000:96
B000:32 and A000:64
BC00:16 (2,3) and A000:96
VGA Bios Rom C0000-C7FFF C600:8 (4)
Notes: (1) Cannot be used with graphics modes.
(2) WINDOWS 3.0 may write in this area!
(3) May be combined with DOS=B000:32.
(4) See section 13, "Video Adapter Bios ROMs"
_1_3_.__V_i_d_e_o__A_d_a_p_t_e_r__B_i_o_s__R_O_M_s_____
MDA and CGA use the standard ROM Bios; they have no ROM of their
own. EGA and VGA adapters, however, incorporate their own ROM
Bios chip right on the adapter card. LASTBYTE successfully
recognizes these ROMs, but has to treat VGA in a special manner:
The VGA adapter made by IBM has a 24k ROM installed at
C0000-C5FFF, which means that the 8k at C6000-C7FFF should be
usable. Although almost all VGA clones have a ROM signature
that indicates 24k, many of them use the C6000-C7FFF space for
ROM Bios or RAM extensions that provide their "Super VGA"
features. In particular, the Video7 and Paradise VGA's
incorporate their own RAM from C6000-C7FFF. (This may also be
true of other VGA boards that uses a VLSI chip manufactured by
Chips and Technologies, Tseng Labs, Paradise, or Headland
Technologies.) For this reason, when LASTBYTE finds anybody's
VGA adapter, it automatically assumes that there is a 32k ROM at
C0000-C7FFF.
_1_4_.__H_I_G_H_A_P_N_D_:__S_t_r_e_t_c_h_i_n_g__C_o_n_v_e_n_t_i_o_n_a_l__M_e_m_o_r_y__b_e_y_o_n_d__6_4_0_k___
HIGHAPND.EXE is a program that can only be used in conjunction
with the "APPEND=" option of LASTBYTE.SYS. HIGHAPND.SYS is a
device driver version of HIGHAPND.EXE. Either can be used to
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 18
append some of the memory that begins at 640k onto the end of
DOS Conventional (low) memory (and also to return later to
640k).
Monochrome (MDA), Hercules, and CGA display adapters don't use
the 64k region starting at A000, and so this memory can be used
to extend conventional memory from 640k to 704k. CGA display
adapters also don't use the next 32k either, and so CGA users
may extend conventional memory all the way to 736k.
EGA and VGA display adapters have a 64k hi-resolution graphics
display buffer that is located at A000. This buffer is only
needed when you are using only hi-resolution graphics. When the
display is in either text or low-resolution CGA graphics modes,
this memory is not used, and may be used to extend conventional
memory. Since most EGA and VGA adapters usually don't use the
32k region at B000, you may even be able to extend conventional
memory up to 736k.
HIGHAPND will automatically disable any EGA or VGA hi-resolution
graphics capability whenever conventional memory has been
extended beyond 640k. This makes software that attempts to
sense what type of display adapter is installed think that you
have only a CGA adapter. Later, when you need the graphics
capability, you can disable the memory extension and
hi-resolution graphics will be automatically re-enabled.
HIGHAPND.SYS can be used during CONFIG.SYS processing:
DEVICE=HIGHAPND.SYS ON {Extends conv. memory beyond 640k}
DEVICE=HIGHAPND.SYS OFF {Resets conv. memory to 640k}
Note: HIGHAPND.SYS may not work properly with some versions
of DOS; in such cases, use HIGHAPND.EXE instead.
or HIGHAPND.EXE can be used during AUTOEXEC.BAT processing or at
any time after the computer is booted:
A>HIGHAPND ON {Extends conv. memory beyond 640k}
A>HIGHAPND OFF {Resets conv. memory to 640k}
Note: HIGHAPND.EXE may not work properly with DR DOS;
in such cases, use HIGHAPND.SYS instead.
HIGHAPND (or HIGHMEM) can be used without any command line
options to determine the current size of conventional memory and
the state of EGA/VGA hi-resolution graphics:
A>HIGHAPND
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 19
You can put these commands into a batch file to simplify
switching back and forth. For example, if you want the extra
memory all the time except when you need hi-res graphics for
WINDOWS, create a batch file like the following to run windows:
@ECHO OFF
HIGHAPND OFF
WIN %1 %2
HIGHAPND ON
If you have hi-res graphics disabled and run a program that
tries to use hi-res graphics without first sensing for an EGA or
VGA adapter, LASTBYTE will notice the conflict, issue an error
message, and terminate the program. Some programs redirect a
few interrupts during their initialization and then restore them
before termination. LASTBYTE's termination of graphics programs
doesn't know how to restore these interrupts, so in some cases
you may have to reboot the computer. In other words, if you
experience this kind of program termination with an application
program, it's best to prepare a batch file (as shown above) to
run the program.
Notes
o The use of HIGHAPND.EXE requires the use of an
APPEND=A000:?? option on the LASTBYTE command
line.
o There is no benefit to using HIGHDRVR.SYS to load
HIGHAPND.SYS into high memory because it never
stays resident.
_1_5_.__U_s_i_n_g__T_h_e__L_a_s_t__B_y_t_e__w_i_t_h__E_x_p_a_n_d_e_d__M_e_m_o_r_y__
Expanded memory always has an associated device driver. If that
driver is loaded before LASTBYTE.SYS in the CONFIG.SYS file (and
if the hardware is enabled) LASTBYTE will recognize the 64k EMM
Page Frame of the expanded memory and do the right thing: It
will treat the Page Frame like any other Adapter Ram and disable
the motherboard RAM that falls in the same address space so that
it doesn't interfere with the Page Frame. For example, if the
EMM driver is loaded first (as described above), LASTBYTE will
report the 64k EMM Page Frame as "EMS Page Frame".
This works fine, of course, but loading the EMM driver first
precludes the possibility of loading it into High Memory. To
get the EMM driver in to High Memory means that it must be
loaded after LASTBYTE.SYS, but you must be careful!
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 20
If LASTBYTE.SYS is loaded first, the Page Frame will be
recognized only in two cases: (1) The Page Frame used by the
Expanded Memory controller built into some Chips and
Technologies chipsets will be recognized and reported as "EMS
Page Frame". (2) The Page Frame of a REAL expanded memory board
is (if enabled) recognized and reported as "Adapter RAM". In
either case, LASTBYTE will not use that memory space.
Recognizing EMS Boards
Some EMS boards must be enabled by their device driver
before they respond as read/write memory. This
prevents LASTBYTE from recognizing them, and you will
have to use a "BANKSWITCH=" option to keep LASTBYTE
from using the Page Frame memory space.
If you don't have an expanded memory board, but have used a
device driver (like EMM386.SYS) that EMULATES expanded memory
using extended memory, then LASTBYTE.SYS will not know about the
page frame unless the emulator is loaded first. If LASTBYTE.SYS
is loaded first, then you must use a "EXCLUDE=" (not
"BANKSWITCH="!) command line option of LASTBYTE.SYS to reserve a
64k region where the emulated Page Frame can be placed. (Do NOT
use a corresponding EMMInclude option in the SYSTEM.INI file.)
For EMM386.SYS, this 64k region must lie at C000, C400, C800,
CC00, D000, D400, D800, DC00, or E000.
_1_6_.__H_I_G_H_E_M_S_:__E_m_u_l_a_t_i_n_g__E_x_p_a_n_d_e_d__M_e_m_o_r_y__w_/_B_a_n_k_-_S_w_i_t_c_h__M_e_m_o_r_y___
Two Expanded Memory Emulators are provided with LASTBYTE. Both
use high memory as Expanded Memory. HIGHEMS3.SYS is compliant
with the older LIM 3.2 spec, and HIGHEMS4.SYS with the newer LIM
4.0 spec. Both are included since the HIGHEMS3.SYS requires
much less memory for the device driver itself than
HIGHEMS4.SYS. In many applications, you may find that 3.2 is
all you need.
These device drivers EMULATE Expanded Memory! That means that
they use software to copy data back and forth between the
logical EMS memory (pages) and the Page Frame. Obviously, this
is MUCH slower than the performance you would realize with
hardware support, or even with EMM386.SYS. Therefore, these
device drivers are provided for those who have no other way of
providing EMS memory to their applications, such as users with
only 1Meg of memory.
Both HIGHEMS3.SYS and HIGHEMS4.SYS have an optional command line
parameter which is the number of 16k EMS pages to allocate. If
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 21
omitted, the maximum allocation will be used. Bank-Switch
Memory is allocated first, and if that isn't enough, then other
High Memory is allocated to satisfy the total page request.
Use only one of these device drivers, and load it AFTER
LASTBYTE.SYS. The driver itself may be loaded into high memory
using HIGHDRVR.SYS.
Suggestion
On a machine with no expanded memory, you might want
to use HIGHEMS3 to provide some Expanded Memory for
Charles Lazo's scroll-back TSR, WAS.COM. This utility
saves lines of text that have been scrolled off the
top of the screen and allows you to pull them back
down for review. WAS is available from a number of
BBS's, usually under the filename WAS050.ZIP or
WAS050.ARC.
_1_7_.__F_i_n_e_-_T_u_n_i_n_g__y_o_u_r__A_d_a_p_t_e_r__H_a_r_d_w_a_r_e__C_o_n_f_i_g_u_r_a_t_i_o_n____
Many adapter cards occupy some portion of the 640k-1Meg address
space. Some of these cards, such as SCSI Disk Controllers,
often have DIP switches or jumpers that can be used to set the
address space they occupy to one of a few chioces.
If the memory map displayed by HIGHMEM is fragmented because one
of these adapters sits between two "....DOS Free" areas, you may
want to try to reposition the address space occupied by that
adapter by modifying the DIP switch or jumper settings on the
card.
Having one large free memory block is better than two smaller
ones because TSR's and device drivers almost always require more
memory during initialization than once installed. In other
words, neither of the two smaller blocks may be large enough for
the installation, but might if they were combined.
_1_8_.__U_s_i_n_g__H_I_G_H_U_M_M_._S_Y_S__w_i_t_h__4_D_O_S_____
4DOS is a shareware replacement for COMMAND.COM. HIGHUMM.SYS
may be used to move the 4DOS command processor and its master
environment into "Upper Memory Blocks" (UMB's) between 640k and
1M, thus reducing the amount of conventional memory below 640k
used by 4DOS from 3.4k bytes to 256 bytes.
If you are using HIMEM.SYS to manage Extended Memory, then your
CONFIG.SYS file should load HIGHUMM.SYS after HIMEM.SYS, as in:
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 22
DEVICE=LASTBYTE.SYS {and any LASTBYTE options}
DEVICE=HIGHDRVR.SYS HIMEM.SYS {and any HIMEM options}
DEVICE=HIGHDRVR.SYS HIGHUMM.SYS
This causes HIGHUMM.SYS to add the UMB functions to the XMS
driver implemented by HIMEM.SYS. If you don't need HIMEM.SYS,
you can use HIGHUMM.SYS as a UMB-Only version of an XMS device
driver, as in:
DEVICE=LASTBYTE.SYS {and any LASTBYTE options}
DEVICE=HIGHDRVR.SYS HIGHUMM.SYS
Next you must add a "SHELL=" line to CONFIG.SYS for 4DOS,
including the options "/U" (to place the command processor in an
UMB) and "/E:512U" (to place the master environment in an UMB).
The value "512" is of course only an example - other environment
sizes may be specified. You may also want to specify these
options for secondary shells in the 4DSHELL environment
variable. Consult the 4DOS documentation for further details.
4DOS may be downloaded from The Future Technology BBS at (617)
720-3600, or obtained directly from:
J.P. Software CompuServe: 75300,210
P.O. Box 1470 BIX: "trawson"
E. Arlington, MA 02174 Internet, Bitnet, etc:
Voice: (617) 646-3975 75300.210@compuserve.com
Fax: (617) 646-0904
_1_9_.__U_s_i_n_g__L_A_S_T_B_Y_T_E__w_i_t_h__H_y_p_e_r_W_a_r_e_'_s__H_y_p_e_r_D_i_s_k__C_a_c_h_e__P_r_o_g_r_a_m__
HyperDisk is a shareware disk caching utility. It's too large
to load high with HIGHDRVR or HIGHTSR under the 32K limit
imposed by the unlicensed evaluation version of LASTBYTE.
However, you can work around this limitation by using
HyperDisk's "XS" option to load itself into the 48k block
starting at E400. Just be sure to exclude this area by using
the following option on the LASTBYTE.SYS command line:
DEVICE=LASTBYTE.SYS EXC=E400:48
If you have a licensed version of LASTBYTE, then a better
approach is to use either HIGHDRVR or HIGHTSR (as appropriate)
to load HyperDisk high (without HyperDisk's "XS" option). This
method guarantees that the minimum amount of high memory will be
used.
HyperDisk can be downloaded from HyperWare's BBS at (408)
683-4988, or obtained directly from:
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 23
HyperWare
14460 Sycamore Ave.
San Martin, CA 95046
Voice: (408) 683-4911
FAX: (408) 683-4042
_2_0_.__H_I_G_H_B_F_R_S_:__L_o_a_d_i_n_g__D_O_S__B_u_f_f_e_r_s__i_n_t_o__H_i_g_h__M_e_m_o_r_y__
NOTE: HIGHBFRS *ONLY* works for DOS 3.xx. It does *NOT* work
for DOS 4.
╔═════════════════════════════════════════════════╗
║ WARNING! PLACING DOS BUFFERS IN HIGH MEMORY ║
║ CAN RESULT IN THE LOSS OF DATA. I.E., IT CAN ║
║ DAMAGE THE DIRECTORY AND FILE ALLOCATION TABLES ║
║ OF YOUR DISK. READ EVERYTHING IN THIS SECTION ║
║ BEFORE CONSIDERING THE USE OF THIS UTILITY. ║
╚═════════════════════════════════════════════════╝
Some 16-bit adapter cards do not properly decode the address
lines within the narrow time constraints imposed by the Address
Latch Enable (ALE) signal. As a result, such cards will
occassionally respond to a memory access that is directed at
some other portion of the address space. Thinking that it is
for them, they force the transfer into 16-bit mode even though
the intended recipient requires 8-bit mode, and thus cause
erroneous data to be transferred to the bytes in the
odd-numbered addresses. The most common and damaging occurence
occurs during the 8-bit DMA transfers between a floppy disk
drive and high memory near the address space occupied by an
offending 16-bit adapter card. Due to organization of the
address signals on the AT bus, this phenomena only occurs when
the two address areas are within the same 128k region. There
are three such regions in the high memory area: A0000-BFFFF,
C0000-DFFFF, and E0000-FFFFF.
Evidence of this hardware problem has been exhibited by other
memory managers that also offer software to locate DOS buffers
in high memory. The problem is NOT unique to LASTBYTE.
HIGHBFRS offers two solutions to this problem. The first (and
preferred solution) is to restrict the placement of DOS buffers
to particular 128k regions in high memory. For example, if you
have an offending 16-bit VGA card, you would want to place the
DOS buffers in only the last 128k region since the VGA display
buffer occupies A0000-AFFFF and B8000-BFFFF and because the VGA
Bios Rom occupies C0000-C7FFF. The corresponding command line
options (explained in more detail later) would be:
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 24
HIGHBFRS A000-BFFF=0 C000-DFFF=0 BUFFERS=20
If you have 16-bit adapter cards in all three 128k segments,
then a second (different) solution may be both necessary and
sufficient. It intercepts transfers between floppy disk drives
(an 8-bit DMA interface) and high memory, and redirects the
transfer through an intermediate sector buffer in conventional
(low) memory. Almost all hard disk controllers use 16-bit CPU
instructions to transfer data and thus do not incur the
problem. The corresponding command line options would be:
HIGHBFRS FLOPPY=1 BUFFERS=20
To use HIGHBFRS, you MUST set "BUFFERS=1" in your CONFIG.SYS
file. This one buffer in Conventional (low) memory is required
by the FLOPPY option as the intermediate buffer for transfers
between floppy disk drives and high memory.
HIGHBFRS defaults to maximum buffers and automatically
determines the safest location for loading buffers into high
memory by sensing the presence 16-bit adapter cards. If none of
the three 128k segments is considered "safe", it will enable
interception of floppy transfers. Any of these defaults can be
overridden by one or more of the following command line options:
BUFFERS=<number> (Abbreviated "B=<number>")
Changes the number of DOS buffers to the value
specified. (Note: "<number>" is a number from
1-99.)
BUFFERS=MAXIMUM (Abbreviated "B=M")
Changes the number of DOS buffers to the maximum
permitted by the amount of available unrestricted
memory, but no more than the DOS limit of 99.
SENSE (Abbreviated "S")
Resets the buffer placement restrictions by
sensing the presense of 16-bit adapter cards. If
all three segments are thus restricted,
interception of floppy transfers is enabled.
FLOPPY=<switch> (Abbreviated "F=<switch>")
Enables (1) or disables (0) redirection of Bios
INT 13h calls that attempt to transfer data
between a floppy disk drive and high memory. If
redirected, such transfers go through an
intermediate buffer located in Conventional (low)
Copyright (C) 1990, Key Software Products. All Rights Reserved
Dec 11, 1990 The LAST BYTE (tm) 25
memory. (Note: "<switch>" is either 0 or 1.)
A000-BFFF=<switch> (Abbreviated "A=<switch>")
C000-DFFF=<switch> (Abbreviated "C=<switch>")
E000-FFFF=<switch> (Abbreviated "E=<switch>")
where "<switch>" is 0 or 1. Enables (1) or
disables (0) the placement of DOS buffers in the
corresponding 128k region of the high memory
address space.
All of these are optional, may be combined at random, and may be
abbreviated by their first letter (e.g., A=<switch> instead of
A000-BFFF=<switch>). The first time you run HIGHBFRS, all the
options default to 1 unless overridden by command line
arguments. Each successive time HIGHBFRS is run, the defaults
are whatever the last setting of each option happens to be.
When HIGHBFRS is invoked with no command line arguments, it
simply reports the number of DOS buffers presently located in
High Memory and whether or not transfers between floppy disk
drives and high memory are redirected. You may use the HIGHMEM
program to determine where the buffers have been placed in high
memory.
MicroSoft recommends setting the "BUFFERS=" option in CONFIG.SYS
according to the type of application most frequently used.
Implicit within this recommendation is the assumption that you
won't change the value very often since it requires editing
CONFIG.SYS and rebooting.
However, since HIGHBFRS allows you to increase or decrease the
number of buffers dynamically, you could create some batch files
to invoke your applications with the optimum number.
In general, more buffers help when running programs that perform
random access on a relatively small number of disk records (such
as the index for a database program), or if your disk has many
subdirectories organized on several levels.
Copyright (C) 1990, Key Software Products. All Rights Reserved
The LAST BYTE (tm)
Table of Contents
1. Introduction .................................... 1
2. Installation .................................... 3
3. Command Line Options For LASTBYTE.SYS ............... 6
4. HIGHMARK and HIGHUNDO: Unloading TSRs from Memory ..... 9
5. HIGHINST: Loading SHARE.EXE into High Memory ......... 10
6. The /SIZE option of HIGHDRVR HIGHTSR and HIGHINST ...... 10
7. The /NOENV option of HIGHTSR and HIGHINST ............. 11
8. Installing FASTOPEN and MODE into High Memory ......... 12
9. HIGHDISK: A Ram Disk in Bank-Switch Memory ............ 13
10. Windows 3.0 Compatibility ........................ 14
10.1 Modifying the Windows SYSTEM.INI File ......... 14
10.2 HIGHMEM and Windows 386 Enhanced Mode .......... 14
10.3 HIGHDISK and Windows 386 Enhanced Mode ......... 15
11. Using the DOS=F000:32 Option ...................... 15
12. Video Display RAM above 640k ....................... 15
13. Video Adapter Bios ROMs ........................... 17
14. HIGHAPND: Stretching Conventional Memory beyond 640k 17
15. Using The Last Byte with Expanded Memory ............. 19
16. HIGHEMS: Emulating Expanded Memory w/Bank-Switch Memory 20
17. Fine-Tuning your Adapter Hardware Configuration .... 21
18. Using HIGHUMM.SYS with 4DOS ....................... 21
19. Using LASTBYTE with HyperWare's HyperDisk Cache Program 22
20. HIGHBFRS: Loading DOS Buffers into High Memory ....... 23
Copyright (C) 1990, Key Software Products. All Rights Reserved